from Task_1.Task_1_1.modules.module_insert_data import ImportFromDB
from Task_1.Task_1_1.modules.module_create_db import CreateDB
from Task_1.Task_1_3_and_1_4.export import Export

import time


class Task_1:
    def start(self):
        start = time.time()
# Задание 1.1 ==========================================================================================================
        # Создаем необходимые схемы
        CreateDB().create_schema('DS')
        CreateDB().create_schema('LOGS')

        # Добавляем таблицы
        CreateDB().create_table(r"Task_1/Task_1_1/QuerySQL/create_table_for_logs.sql")
        CreateDB().create_table(r"Task_1/Task_1_1/QuerySQL/create_tables.sql")

        # Считываем данные с csv и заносим их в таблицы
        ImportFromDB('DS').parse_csv(r'Task_1/Task_1_1/db_files')
# Задание 1.2 ==========================================================================================================
        # Создание схемы DM
        CreateDB().create_schema('DM')
        # Загрузка витрин и процедур
        CreateDB().create_table(r"Task_1/Task_1_2/MyQuery/creating_storefronts.sql")
        CreateDB().create_table(r"Task_1/Task_1_2/QuerySQL/procedure_fill_account_turnover_f.sql")
        CreateDB().create_table(r"Task_1/Task_1_2/QuerySQL/procedure_fill_f101_round_f.sql")
        CreateDB().create_table(r"Task_1/Task_1_2/QuerySQL/procedure_writeog.sql")
# Задание 1.3 ==========================================================================================================
        Export('dm').from_tables('dm_f101_round_f')
        ImportFromDB('DM').parse_csv(r'Task_1/Task_1_3_and_1_4/export_files')
# Задание 1.4 ==========================================================================================================
        Export('ds').from_function('max_and_min_ft_posting_f', '09-01-2018')
        print(time.time() - start)
